/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package sv.com.intesal.seguridad.managed;

import java.io.Serializable;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;
import sv.com.intesal.clases.auxiliar.Mensaje;

/**
 *
 * @author ejerez
 */
@ManagedBean(name = "sessionManaged")
@ViewScoped
public class SessionManaged implements Serializable {

    private Mensaje m = new Mensaje();
    public static final String agregar = "AGREGAR";
    public static final String modificar = "MODIFICAR";
    public static final String eliminar = "ELIMINAR";
    public static final String anular = "ANULAR";
    public static final String buscar = "BUSCAR";
    public static final String visible = "VISIBLE";
    public static final String reporte = "REPORTE";

    private Boolean validarSession_Roles(String nombreForm, String accion) throws Exception {
        /*ESTE METODO AUTENTICA SI REALMENTE ESTA INGRESADO LA SESSION EL USUARIO y con SUS ROLES*/
        try {
//            SessionControlador sc = new SessionControlador();
//            sc.setAccion(accion);
//            sc.setNombreFormulario(nombreForm);
//            if (sc.authenticateSession() == false) {
//                System.out.println("rediccionar False");
//                sc.redireccionarLogin();
//                return false;
//            } else {
//                if (sc.validar_roles() == false) {
//                    if (accion.equals("VISIBLE")) {
//                        /*INACTIVAR LA SESSION SI DESEA INGRESAR PARA VER LA PAGINA, LO DEMAS DEBERIA QUEDAR EN LA MISMA PAGINA con un mensaje de error*/
//                        sc.setInvalidarSession();
//                    }
//                    return false;
//                }
//            }
            System.out.println("rediccionar False");
            return true;
        } catch (Exception ex) {
            throw new Exception(ex);
        }
    }

    public void logOutSession() {
        /*ES PARA EL LOG OUT.*/
        try {
//            SessionControlador sc = new SessionControlador();
//            sc.setInvalidarSession();
        } catch (Exception ex) {
            ex.printStackTrace();
            m.messageError(m.getIerror());
        }
    }

    public void validar_session(String accion) {
        /*ESTE METODO AUTENTICA SI REALMENTE ESTA INGRESADO LA SESSION DE USUARIO*/

        try {
            SessionManaged sm = new SessionManaged();
            if (sm.validarSession_Roles(accion, "VISIBLE") == true) {
            }
        } catch (Exception ex) {
            m.message(m.getIerror());
            ex.printStackTrace();
        }
    }

    public void redirect(String redirect) {
        try {
//            SessionControlador sc = new SessionControlador();
//            sc.redireccionar(redirect);
        } catch (Exception e) {
            e.printStackTrace();
            m.messageFatal(m.getIerror());
        }
    }

    public void validarSessionActivo() {
        try {
//            SessionControlador sc = new SessionControlador();
//            if (sc.authenticateSession() == false) {
//                sc.redireccionarLogin();
//            }
        } catch (Exception e) {
            e.printStackTrace();
            m.messageError(m.getIerror());
        }
    }

    public Boolean validar_rol_usuario(String webForm, String accion) throws Exception {
        /*ESTE METODO AUTENTICA SI REALMENTE ESTA INGRESADO LA SESSION DE USUARIO
        (PARA FUNCIONES DE LA PAGINA COMO: AGREGAR MODIFICAR, BUSCAR , ELIMINAR)*/
        try {
            SessionManaged sm = new SessionManaged();
            if (sm.validarSession_Roles(webForm, accion) == false) {
                if (accion.equals("AGREGAR")) {
                    m.messageError(m.getIrolAgregar());
                } else if (accion.equals("MODIFICAR")) {
                    m.messageError(m.getIrolModificar());
                } else if (accion.equals("BUSCAR")) {
                    m.messageError(m.getIrolBuscar());
                } else if (accion.equals("ELIMINAR")) {
                    m.messageError(m.getIrolEliminar());
                } else if (accion.equals("ANULAR")) {
                    m.messageError(m.getIrolAnular());
                } else if (accion.equals("REPORTE")) {
                    m.messageError(m.getIrolReporte());
                }
                return false;
            }
            return true;
        } catch (Exception ex) {
            throw new Exception(ex);
        }
    }
}
